const Signals = imports.signals;
const Atk = imports.gi.Atk;
+const Tweener = imports.ui.tweener;
+
var ANIMATED_ICON_UPDATE_TIMEOUT = 16;
+var SPINNER_ANIMATION_TIME = 0.3;
+var SPINNER_ANIMATION_DELAY = 1.0;
var Animation = new Lang.Class({
Name: 'Animation',
Name: 'Spinner',
Extends: AnimatedIcon,
- _init(size) {
+ _init(size, animate=false) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
this.parent(file, size);
+
+ this.actor.opacity = 0;
+ this._animate = animate;
+ },
+
+ play() {
+ Tweener.removeTweens(this.actor);
+
+ if (this._animate) {
+ this.parent();
+ Tweener.addTween(this.actor, {
+ opacity: 255,
+ delay: SPINNER_ANIMATION_DELAY,
+ time: SPINNER_ANIMATION_TIME,
+ transition: 'linear'
+ });
+ } else {
+ this.actor.opacity = 255;
+ this.parent();
+ }
+ },
+
+ stop() {
+ Tweener.removeTweens(this.actor);
+
+ if (this._animate) {
+ Tweener.addTween(this.actor, {
+ opacity: 0,
+ time: SPINNER_ANIMATION_TIME,
+ transition: 'linear',
+ onComplete: () => {
+ this.stop(false);
+ }
+ });
+ } else {
+ this.actor.opacity = 0;
+ this.parent();
+ }
}
});
const Tweener = imports.ui.tweener;
var WORK_SPINNER_ICON_SIZE = 16;
-var WORK_SPINNER_ANIMATION_DELAY = 1.0;
-var WORK_SPINNER_ANIMATION_TIME = 0.3;
var KeyringDialog = new Lang.Class({
Name: 'KeyringDialog',
if (!this._workSpinner)
return;
- Tweener.removeTweens(this._workSpinner.actor);
- if (working) {
+ if (working)
this._workSpinner.play();
- Tweener.addTween(this._workSpinner.actor,
- { opacity: 255,
- delay: WORK_SPINNER_ANIMATION_DELAY,
- time: WORK_SPINNER_ANIMATION_TIME,
- transition: 'linear'
- });
- } else {
- Tweener.addTween(this._workSpinner.actor,
- { opacity: 0,
- time: WORK_SPINNER_ANIMATION_TIME,
- transition: 'linear',
- onCompleteScope: this,
- onComplete() {
- if (this._workSpinner)
- this._workSpinner.stop();
- }
- });
- }
+ else
+ this._workSpinner.stop();
},
_buildControlTable() {
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
this._passwordEntry.clutter_text.connect('activate', this._onPasswordActivate.bind(this));
- this._workSpinner = new Animation.Spinner(WORK_SPINNER_ICON_SIZE);
- this._workSpinner.actor.opacity = 0;
+ this._workSpinner = new Animation.Spinner(WORK_SPINNER_ICON_SIZE, true);
if (rtl) {
layout.attach(this._workSpinner.actor, 0, row, 1, 1);
var DIALOG_ICON_SIZE = 48;
var WORK_SPINNER_ICON_SIZE = 16;
-var WORK_SPINNER_ANIMATION_DELAY = 1.0;
-var WORK_SPINNER_ANIMATION_TIME = 0.3;
var AuthenticationDialog = new Lang.Class({
Name: 'AuthenticationDialog',
this._passwordBox.add(this._passwordEntry,
{ expand: true });
- this._workSpinner = new Animation.Spinner(WORK_SPINNER_ICON_SIZE);
- this._workSpinner.actor.opacity = 0;
-
+ this._workSpinner = new Animation.Spinner(WORK_SPINNER_ICON_SIZE, true);
this._passwordBox.add(this._workSpinner.actor);
this.setInitialKeyFocus(this._passwordEntry);
},
_setWorking(working) {
- Tweener.removeTweens(this._workSpinner.actor);
- if (working) {
+ if (working)
this._workSpinner.play();
- Tweener.addTween(this._workSpinner.actor,
- { opacity: 255,
- delay: WORK_SPINNER_ANIMATION_DELAY,
- time: WORK_SPINNER_ANIMATION_TIME,
- transition: 'linear'
- });
- } else {
- Tweener.addTween(this._workSpinner.actor,
- { opacity: 0,
- time: WORK_SPINNER_ANIMATION_TIME,
- transition: 'linear',
- onCompleteScope: this,
- onComplete() {
- if (this._workSpinner)
- this._workSpinner.stop();
- }
- });
- }
+ else
+ this._workSpinner.stop();
},
performAuthentication() {